home *** CD-ROM | disk | FTP | other *** search
/ Ian & Stuart's Australian Mac: Not for Sale / Another.not.for.sale (Australia).iso / fade into you / being there / Issues & Ideas / VMRL / Concepts / raggett < prev   
Text File  |  1994-10-01  |  27KB  |  489 lines

  1.  
  2.                            EXTENDING WWW TO SUPPORT
  3.                      PLATFORM INDEPENDENT VIRTUAL REALITY
  4.                                        
  5.     David Raggett, Hewlett Packard Laboratories
  6.     (email: dsr@hplb.hpl.hp.com)
  7.     
  8. Abstract
  9.  
  10.    This is a proposal to allow VR environments to be incorporated into
  11.    the World Wide Web, thereby allowing users to "walk" around and push
  12.    through doors to follow hyperlinks to other parts of the Web. VRML is
  13.    proposed as a logical markup format for non-proprietary platform
  14.    independent VR. The format describes VR environments as compositions
  15.    of logical elements. Additional details are specified using a
  16.    universal resource naming scheme support ing retrieval of shared
  17.    resources over the network. The paper closes with ideas for how to
  18.    extend this to support virtual presence teleconferencing.
  19.    
  20. Introduction
  21.  
  22.    This paper describes preliminary ideas for extending the World Wide
  23.    Web to incorporate vir tual reality (VR). By the end of this decade,
  24.    the con tinuing advances in price/performance will allow affordable
  25.    desktop systems to run highly realistic virtual reality models. VR
  26.    will become an increas ingly important medium, and the time is now
  27.    ripe to develop the mechanisms for people to share VR models on a
  28.    global basis. The author invites help in building a proof of concept
  29.    demo and can be con tacted at the email address given above.
  30.    
  31.    VR systems at the low end of the price range show a 3D view into the
  32.    VR environment together with a means of moving around and interacting
  33.    with that environment. At the minimum you could use the cursor keys
  34.    for moving forward and backwards, and turning left and right. Other
  35.    keys would allow you to pick things up and put them down. A mouse
  36.    improves the ease of control, but the "realism" is pri marily
  37.    determined by the latency of the feedback loop from control to changes
  38.    in the display. Joy sticks and SpaceBalls improve control, but cannot
  39.    compete with the total immersion offered by head mounted displays
  40.    (HMDs). High end systems use magnetic tracking of the user's head and
  41.    limbs, together with devices like 3D mice and datagloves to yet
  42.    further improve the illusion.
  43.    
  44.    Sound can be just as important to the illusion as the visual
  45.    simulation: The sound of a clock gets stronger as you approach it. An
  46.    aeroplane roars overhead crossing from one horizon to the next. High
  47.    end systems allow for tracking of multiple moving sources of sound.
  48.    Distancing is the tech nique where you get to see and hear more detail
  49.    as you approach an object. The VR environment can include objects with
  50.    complex behavior, just like their physical analogues in the real
  51.    world, e.g. draw ers in an office desk, telephones, calculators, and
  52.    cars. The simulation of behavior is frequently more demanding
  53.    computationally than updating the visual and aural displays.
  54.    
  55.    The Virtual environment may impose the same restrictions as in the
  56.    real world, e.g. gravity and restricting motion to walking, climbing
  57.    up/down stairs, and picking up or putting down objects. Alter
  58.    natively, users can adopt superpowers and fly through the air with
  59.    ease, or even through walls! When using a simple interface, e.g. a
  60.    mouse, it may be easier to learn if the range of actions at any time
  61.    is limited to a small set of possibilities, e.g. moving forwards
  62.    towards a staircase causes you to climb the stairs. A separate action
  63.    is unnecessary, as the VR environment builds in assumptions about how
  64.    peo ple move around. Avatars are used to represent the user in the VR
  65.    environment. Typically these are sim ple disembodied hands, which
  66.    allow you to grab objects. This avoids the problems in working out the
  67.    positions of the user's limbs and cuts down on the computational load.
  68.    
  69. Platform Independent VR
  70.  
  71.    Is it possible to define an interchange format for VR environments
  72.    which can be visualized on a broad range of platforms from PCs to
  73.    high-end workstations?
  74.    
  75.    At first sight there is little relationship between the capabilities
  76.    of systems at either extreme. In prac tice, many VR elements are
  77.    composed from com mon elements, e.g. rooms have floors, walls,
  78.    ceilings, doors, windows, tables and chairs. Out doors, there are
  79.    buildings, roads, cars, lawns, and trees etc. Perhaps we can draw upon
  80.    experience with document conversion and the Standard Generalized
  81.    Markup Language (SGML) [ref. 4] and specify VR environments at a
  82.    logical level, leaving browsers to fill in the details according to
  83.    the capabilities of each platform.
  84.    
  85.    The basic idea is to compose VR environments from a limited set of
  86.    logical elements, e.g. chair, door, and floor. The dimensions of some
  87.    of these elements can be taken by default. Others, like the dimensions
  88.    of a room, require lists of points, e.g. to specify the polygon
  89.    defining the floor plan. Addi tional parameters give the color and
  90.    texture of sur faces. A picture frame hanging on a wall can be
  91.    specified in terms of a bitmapped image.
  92.    
  93.    These elements can be described at a richer level of detail by
  94.    reference to external models. The basic chair element would have a
  95.    subclassification, e.g. office chair, which references a detailed 3D
  96.    model, perhaps in the DXF format. Keeping such details in separate
  97.    files has several advantages:
  98.      * Simplifies the high level VR markup format
  99.        
  100.    This makes it easier to create and revise VR envi ronments than with a
  101.    flat representation.
  102.      * Models can be cached for reuse in other VR environments
  103.        
  104.    Keeping the definition separate from the environ ment makes it easy to
  105.    create models in terms of existing elements, and saves resources.
  106.      * Allows for sharing models over the net
  107.        
  108.    Directory services can be used to locate where to retrieve the model
  109.    from. In this way, a vast collec tion of models can be shared across
  110.    the net.
  111.      * Alternative models can be provided according to each browser's
  112.        capabilities.
  113.        
  114.    Authors can model objects at different levels of detail according to
  115.    the capabilities of low, mid and high end machines. The appropriate
  116.    choice can be made when querying the directory service, e.g. by
  117.    including machine capabilities in the request. This kind of
  118.    negotiation is already in place as part of the World Wide Web's HTTP
  119.    protocol [ref. 3].
  120.    
  121.    Limiting VR environments to compositions of known elements would be
  122.    overly restrictive. To avoid this, it is necessary to provide a means
  123.    of specifying novel objects, including their appearance and behavior.
  124.    The high level VR markup format should therefore be dynamically
  125.    extendable. The built-in definitions are merely a short cut to avoid
  126.    the need to repeat definitions for common objects.
  127.    
  128. Universal Resource Locators (URLs
  129.  
  130.    The World Wide Web uses a common naming scheme to represent hypermedia
  131.    links and links to shared resources. It is possible to represent
  132.    nearly any file or service with a URL [ref. 2].
  133.    
  134.    The first part always identifies the method of access (or protocol).
  135.    The next part generally names an Internet host and is followed by path
  136.    information for the resource in question. The syntax varies according
  137.    to the access method given at the start. Here are some examples:
  138.      * http://info.cern.ch/hypertext/WWW/TheProject.html
  139.        
  140.        This is the CERN home page for the World Wide Web project. The
  141.        prefix "http" implies that this resource should be obtained using
  142.        the hypertext transfer protocol (HTTP).
  143.      * http://cui_www.unige.ch/w3catalog
  144.        
  145.        The searchable catalog of WWW resources at CUI, in Geneva. Updated
  146.        daily.
  147.      * news:comp.infosystems.www
  148.        
  149.        The Usenet newsgroup "comp.infosystems.www". This is accessed via
  150.        the NNTP protocol.
  151.      * ftp://ftp.ifi.uio.no/pub/SGML
  152.        
  153.        This names an anonymous FTP server: ftp.ifi.uio.no which includes
  154.        a collection of information relating to the Standard Generalized
  155.        Markup Language - SGML.
  156.        
  157.   APPLICATION TO VR
  158.   
  159.    The URL notation can be used in a VR markup language for:
  160.      * Referencing wire frame models, image tiles and other resources
  161.        
  162.    For example, a 3D model of a vehicle or an office chair. Resources may
  163.    be defined intensionally, and generated by the server in response to
  164.    the user's request.
  165.      * Hypermedia links to other parts of the Web.
  166.        
  167.    Major museums could provide educational VR mod els on particular
  168.    topics. Hypermedia links would allow students to easily move from one
  169.    museum to another by "walking" through links between the dif ferent
  170.    sites.
  171.    
  172.    One drawback of URLs is that they generally depend on particular
  173.    servers. Work is in progress to provide widespread support for
  174.    lifetime identifiers that are location independent. This will make it
  175.    pos sible to provide automated directory services akin to X.500 for
  176.    locating the nearest copy of a resource.
  177.    
  178. MIME: Multipurpose Internet Mail Extensions
  179.  
  180.    MIME describes a set of mechanisms for speci fying and describing the
  181.    format of Internet message bodies. It is designed to allow multiple
  182.    objects to be sent in a single message, to support the use of multi
  183.    ple fonts plus non-textual material such as images and audio
  184.    fragments. Although it was conceived for use with email messages, MIME
  185.    has a much wider applicability. The hypertext transfer protocol HTTP
  186.    uses MIME for request and response message for mats. This allows
  187.    servers to use a standard notation for describing document contents,
  188.    e.g. image/gif for GIF images and text/html for hypertext documents in
  189.    the HTML format. When a client receives a MIME message the content
  190.    type is used to invoke the appropriate viewer. The bindings are
  191.    specified in the mailcaps configuration file. This makes it easy to
  192.    add local support for a new format without changes to your mailer or
  193.    web browser. You simply install the viewer for the new format and then
  194.    add the bind ing into your mailcaps file.
  195.    
  196.    The author anticipates the development of a pub lic domain viewer for
  197.    a new MIME content type: video/vrml. A platform independent VR markup
  198.    language would allow people to freely exchange VR models either as
  199.    email messages or as linked nodes in the World Wide Web.
  200.    
  201. A sketch of the proposed VR markup language (VRML)
  202.  
  203.    A major distinction appears to be indoor and out door scenes. Indoors,
  204.    the scene is constructed from a set of interconnected rooms. Outdoors,
  205.    you have a landscape of plains, hills and valleys upon which you can
  206.    place buildings, roads, fields, lakes and for ests etc. The following
  207.    sketch is in no way compre hensive, but should give a flavour of how
  208.    VRML would model VR environments. Much work remains to turn this
  209.    vision into a practical reality.
  210.    
  211.   INDOOR SCENES
  212.   
  213.    The starting point is to specify the outlines of the rooms. Architects
  214.    drawings describe each building as a set of floors, each of which is
  215.    described as a set of interconnected rooms. The plan shows the posi
  216.    tion of windows, doors and staircases. Annotations define whether a
  217.    door opens inwards or outwards, and whether a staircase goes up or
  218.    down. VRML directly reflects this hierarchical decomposition with
  219.    separate markup elements for buildings, floors, rooms, doors and
  220.    staircases etc. Each element can be given a unique identifier. The
  221.    markup for adjoining rooms use this identifier to name interconnecting
  222.    doors. Rooms are made up from floors, walls and ceilings. Additional
  223.    attributes define the appearance, e.g. the color of the walls and
  224.    ceiling, the kind of plaster coving used to join walls to the ceiling,
  225.    and the style of windows. The range of elements and their permitted
  226.    attributes are defined by a formal specification analogous to the SGML
  227.    document type definition.
  228.    
  229.    Rooms have fittings: carpets, paintings, book cases, kitchen units,
  230.    tables and chairs etc. A painting is described by reference to an
  231.    image stored sepa rately (like inlined images in HTML). The browser
  232.    retrieves this image and then applies a parallax transformation to
  233.    position the painting at the desig nated location on the wall. Wall
  234.    paper can be mod elled as a tiling, where each point on the wall maps
  235.    to a point in an image tile for the wall paper. This kind of texture
  236.    mapping is computationally expen sive, and low power systems may
  237.    choose to employ a uniform shading instead. Views through windows to
  238.    the outside can be approximated by mapping the line of sight to a
  239.    point on an image acting as a back cloth, and effectively at infinity.
  240.    Kitchen units, tables and chairs etc. are described by reference to
  241.    external models. A simple hierarchical naming scheme can be used to
  242.    substitute a simpler model when the more detailed one would overload a
  243.    low power browser.
  244.    
  245.    Hypermedia links can be represented in a variety of ways. The simple
  246.    approach used in HTML docu ments for depicting links is almost
  247.    certainly inade quate. A door metaphor makes good sense when
  248.    transferring to another VR model or to a different location in the
  249.    current model. If the link is to an HTML document, then an obvious
  250.    metaphor is opening a book (by tapping on it with your virtual hand?).
  251.    Similarly a radio or audio system makes sense for listening to a audio
  252.    link, and a television for viewing an MPEG movie.
  253.    
  254.   OUTDOOR SCENES
  255.   
  256.    A simple way of modelling the ground into plains, hills and valleys is
  257.    to attach a rubber sheet to a set of vertical pins of varying lengths
  258.    and placed at irregular locations: zi = fi(x, y). The sheet is single
  259.    valued for any x and y, where x and y are orthogonal axes in the
  260.    horizontal plane. Smooth terrain can be described by interpolating
  261.    gradients specified at selected points. The process is only applied
  262.    within polygons for which all vertices have explicit gradi ents. This
  263.    makes it possible to restrict smoothing to selected regions as needed.
  264.    
  265.    
  266.    The next step is to add scenery onto the underly ing ground surface:
  267.      * Texture wrapping - mapping an aerial photo graph onto the ground
  268.        surface.
  269.        
  270.    This works well if the end-user is flying across a landscape at a
  271.    sufficient height that parallax effects can be neglected for surface
  272.    detail like trees and buildings. Realism can be further enhanced by
  273.    including an atmospheric haze that obscures distant details.
  274.      * Plants - these come in two categories: point-like objects such as
  275.        individual trees and area-like objects such as forests, fields,
  276.        weed patches, lawns and flower beds.
  277.        
  278.    A tree can be placed at a given (x, y) coordinate and scaled to a
  279.    given height. A range of tree types can be used, e.g. deciduous
  280.    (summer/fall), and coniferous. The actual appearance of each type of
  281.    tree is speci fied in a separate model, so VRML only needs the class
  282.    name and a means of specifying the model's parameters (in many cases
  283.    defaults will suffice). Extended objects like forests can be rendered
  284.    by repeating an image tile or generated as a fractal tex ture, using
  285.    attributes to reference external definitions for the image tile or
  286.    texture.
  287.      * Water - streams, rivers and water falls; ponds, lakes and the sea.
  288.        The latter involves attributes for describing the nature of the
  289.        beach: muddy estuary, sandy, rocky and cliffs.
  290.      * Borders - fences, hedges, walls etc. which are fundamentally
  291.        line-like objects
  292.      * Roads - number of lanes, types of junctions, details for signs,
  293.        traffic lights etc.
  294.        
  295.    Each road can be described in terms of a sequence of points along its
  296.    center and its width. Features like road lights and crash barriers can
  297.    be generated by default according the attributes describing the kind
  298.    of road. Road junctions could be specified in detail, but it seems
  299.    possible to generate much of this locally on the basis of the nature
  300.    of the junction and the end points of the roads it connects:
  301.    freeway-exit, clover- leaf junction, 4-way stop, round-about etc. In
  302.    gen eral VRML should avoid specifying detail where this can be
  303.    inferred by the browsing tool. This reduces the load on the network
  304.    and allows browsers to show the scene in the detail appropriate to the
  305.    power of each platform. Successive generations of kit can add more and
  306.    more detail leading to progres sively more realistic scenes without
  307.    changes to the original VRML documents.
  308.      * Buildings - houses, skyscrapers, factories, filling stations,
  309.        barns, silos, etc.
  310.        
  311.    Most buildings can be specified using constructive geometry, i.e. as a
  312.    set of intersecting parts each of which is defined by a rectangular
  313.    base and some kind of roof. This approach describes buildings in a
  314.    compact style and makes it feasible for VRML to deal with a rich
  315.    variety of building types. The tex ture of walls and roofs, as well as
  316.    the style of win dows and doors can be defined by reference to
  317.    external models.
  318.      * Vehicles, and other moving objects
  319.        
  320.    A scene could consist of a number of parked vehi cles plus a number of
  321.    vehicles moving along the road. Predetermined trajectories are rather
  322.    unexcit ing. A more interesting approach is to let the behav ior of
  323.    the set of vehicles emerge from simple rules governing the motion of
  324.    each vehicle. This could also apply to pedestrians moving on a
  325.    side-walk. The rules would be defined in scripts associated with the
  326.    model and not part of VRML itself. The opportu nities for several
  327.    users to meet up in a shared VR scene are discussed in the next
  328.    section.
  329.      * Distant scenery, e.g. a mountain range on the horizon
  330.        
  331.    This is effectively at infinity and can be represented as a back cloth
  332.    hung in a cylinder around the viewer. It could be implemented using
  333.    bitmap images (e.g. in GIF or JPEG formats). One issue is how to make
  334.    the appearance change according to the weather/ time of day.
  335.      * Weather and Sky
  336.        
  337.    Outdoor scenes wouldn't be complete without a range of different
  338.    weather types! Objects should gradually lose their color and contrast
  339.    as their dis tance increases. Haze is useful for washing out details
  340.    as the browser can then ignore objects beyond a certain distance. The
  341.    opacity of the haze will vary according to the weather and time of
  342.    day. Fractal techniques can be used to synthesize cloud formations.
  343.    The color of the sky should vary as a function of the angle from the
  344.    sun and the angle above the horizon. For VRML, the weather would be
  345.    characterized as a set of predetermined weather types.
  346.      * Distancing
  347.        
  348.    The illusion will be more complete if you can see progressively more
  349.    detail the closer you get. Unfor tunately, it is impractical to
  350.    explicitly specify VR models in arbitrary detail. Another approach is
  351.    to let individual models to reference more detailed models in a chain
  352.    of progressively finer detail, e.g. a model that defines a lawn as a
  353.    green texture can reference a model that specifies how to draw
  354.    individual blades of grass. The latter is only needed when the user
  355.    zooms in on the lawn. The browser then runs the more detailed model to
  356.    generate a forest of grass blade.
  357.    
  358.   ACTIONS AND SCRIPTS
  359.   
  360.    Simple primitive actions are part of the VRML model, for example to
  361.    ability of the user to change position/orientation and to pick up/put
  362.    down or "press" objects. Other behaviour is the responsibility of the
  363.    various objects and lies outside the scope of VRML. Thus a virtual
  364.    calculator would allow users to press keys and carry out calculations
  365.    just like the real thing. This rich behaviour is specified as part of
  366.    the model for the calculator object class along with details of its
  367.    appearence. A scripting language is needed for this, but it will be
  368.    independent of VRML, and indeed there could be a variety of different
  369.    lan guages. The format negotiation mechanism in HTTP seems appropriate
  370.    to this, as it would allow browsers to indicate which representations
  371.    are supported when sending requests to servers.
  372.    
  373.   ACHIEVING REALISM
  374.   
  375.    Another issue, is how to provide realism without excessive computional
  376.    demands. To date the com puter graphics community has focussed on
  377.    mathe matical models for realism, e.g. ray tracing with detailed
  378.    models for how objects scatter or transmit light. An alternative
  379.    approach could draw upon artistic metaphors for rendering scenes.
  380.    Paintings are not like photographs, and artists don't try to cap ture
  381.    all details, rather they aim to distill the essen tials with a much
  382.    smaller number of brush strokes. This is akin to symbolic
  383.    representations of scenes. We may be able to apply this to VR. As an
  384.    example consider the difficulty in modelling the folds of cloth on
  385.    your shirt as you move your arm around. Model ling this
  386.    computationally is going to be very expen sive, perhaps a few rules
  387.    can be used to draw in folds when you fold your arms.
  388.    
  389. Virtual presence Teleconferencing
  390.  
  391.    The price performance of computer systems cur rently doubles about
  392.    every 15 months. This has hap pened for the last five years and
  393.    industry pundits see no end in sight. It therefore makes sense to
  394.    consider approaches which today are impractical, but will soon come
  395.    within reach.
  396.    
  397.    A world without people would be a dull place indeed! The markup
  398.    language described above allows us to define shared models of VR
  399.    environ ments, so the next step is to work out how to allow people to
  400.    meet in these environments. This comes down to two parts:
  401.      * The protocols needed to ensure that each user sees an up to date
  402.        view of all the other people in the same virtual location, whether
  403.        this is a room or somewhere outdoors.
  404.      * A way of visualising people in the virtual envi ronment, this in
  405.        turn begs the question of how to sense each user - their
  406.        expressions, speech and movements.
  407.        
  408.    For people to communicate effectively, the latency for synchronizing
  409.    models must of order 100 milliseconds or less. You can get by with
  410.    longer delays, but it gets increasingly difficult. Adopting a formal
  411.    system for turn taking helps, but you lose the ability for non-verbal
  412.    communication. In meetings, it is common to exchange glances with a
  413.    colleague to see how he or she is reacting to what is being said. The
  414.    rapid feedback involved in such exchanges calls for high resolution
  415.    views of people's faces together with very low latency.
  416.    
  417.    A powerful technique will be to use video cam eras to build real-time
  418.    3D models of people's faces. As the skull shape is fixed, the changes
  419.    are limited to the orientation of the skull and the relative position
  420.    of the jaw. The fine details in facial expressions can be captured by
  421.    wrapping video images onto the 3D model. This approach greatly reduces
  422.    the bandwidth needed to project lifelike figures into the VR envi
  423.    ronment. The view of the back of the head and the ears etc. are
  424.    essentially unchanging and can be filled in from earlier shots, or if
  425.    necessary synthesized from scratch to match visible cues.
  426.    
  427.    In theory, the approach needs a smaller band width than conventional
  428.    video images, as head movements can be compressed into a simple change
  429.    of coordinates. Further gains in bandwidth could be achieved at a cost
  430.    in accuracy by characterizing facial gestures in terms of a
  431.    composition of "iden tikit" stereotypes, e.g. shots of mouths which
  432.    are open or closed, smiling or frowning. The face is then built up by
  433.    blending the static model of the user's face and jaw with the
  434.    stereotypes for the mouth, cheeks, eyes, and forehead.
  435.    
  436.    Although head mounted displays offer total immersion, they also make
  437.    it difficult to sense the user's facial expressions. They are also
  438.    uncomfort able to wear. Virtual presence teleconferencing is therefore
  439.    more likely to use conventional displays together with video cameras
  440.    mounted around the user's workspace. Lightweight headsets are likely
  441.    to be used in preference to stereo or quadraphonic loudspeaker
  442.    systems, as they offer greater auditory realism as well as avoiding
  443.    trouble when sound spills over into neighboring work areas.
  444.    
  445.    The cameras also offer the opportunity for hands free control of the
  446.    user's position in the VR environ ment. Tracking of hands and fingers
  447.    could be used for gesture control without the need for 3D mice or
  448.    spaceballs etc. Another idea is to take cues from head movements, e.g.
  449.    moving your head from side to side could be exaggerated in the VR
  450.    environment to allow users to look from side to side without needing
  451.    to look away from the display being used to visualize that
  452.    environment.
  453.    
  454. Where Next?
  455.  
  456.    For workstations running the X11 windowing system, the PEX library for
  457.    3D graphics is now available on most platforms. This makes it
  458.    practical to start developing proof of concept platform inde pendent
  459.    VR. The proposed VRML interchange for mat could be used within the
  460.    World Wide Web or for email messages. All users would need to do is to
  461.    download a public domain VRML browser and add it to their mailcaps
  462.    file. The author is interested in getting in touch with people willing
  463.    to collaborate in turning this vision into a reality.
  464.    
  465.    
  466.      _________________________________________________________________
  467.    
  468.    
  469.    
  470. References
  471.  
  472.     1. "Hypertext Markup Language (HTML)",
  473.        Tim Berners-Lee, January 1993.
  474.        URL=ftp://info.cern.ch/pub/www/doc/html-spec.ps
  475.        or http://info.cern.ch/hypertext/WWW/MarkUp/MarkUp.html
  476.        
  477.     2. "Uniform Resource Locators", Tim Berners-Lee, January 1992.
  478.        URL=ftp://info.cern.ch/pub/www/doc/url7a.ps
  479.        or http://info.cern.ch/hypertext/WWW/Addressing/Addressing.html
  480.        
  481.     3. "Protocol for the Retrieval and Manipulation of Texual and
  482.        Hypermedia Information",
  483.        Tim Berners-Lee, 1993.
  484.        URL=ftp://info.cern.ch/pub/www/doc/http-spec.ps
  485.        or http://info.cern.ch/hypertext/WWW/Protocols/HTTP/HTTP2.html
  486.        
  487.     4. "The SGML Handbook", Charles F. GoldFarb, pub. 1990 by the
  488.        Clarendon Press, Oxford.
  489.